package com.boco.modules.fdoc.service;

import java.util.List;

import com.boco.common.persistence.Page;
import com.boco.modules.fdoc.model.ServicepackDetailsEntity;
import com.boco.modules.fdoc.model.SigServicepackEntity;
import com.boco.modules.fdoc.vo.ServicepackDetailsVo;
import com.boco.modules.fdoc.vo.SigServicepackVo;

public interface SigServicepackService {
	/**
	 * 获取所有服务包信息
	 * @return
	 */
	public List<SigServicepackEntity> getAll();
	/**
	 * 获取所有服务详细信息
	 * @return
	 */
	public List<SigServicepackVo> getAllDetails();

	/**
	 * 
	 * getSigSvsPackInfoList <br/>
	 * 家庭醫生. <br/>
	 * 1.查询签约服务包列表.<br/>
	 * 注意事项：病种管理需要查询多张表.<br/>
	 *
	 * @author ken
	 * @param page 分页信息
	 * @param entity 查询实体
	 * @return
	 */
	public Page<SigServicepackEntity> getSigSvsPackInfoList(Page<SigServicepackEntity> page,SigServicepackEntity entity);
	/**
	 * 新增签约服务包
	 * @author ken
	 */
	public int insertSvsPackInfo(SigServicepackEntity sigSvsPackEntity); 
	/**
	 * 
	 * getServicePackDetailsLst:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param page
	 * @param servicepackId
	 * @return
	 */
	public Page<ServicepackDetailsVo> getServicePackDetailsLst(Page<ServicepackDetailsVo> page,int servicepackId);
	/**
	 * 新增签约服务包时，判断新增的签约服务包是否存在
	 * isExistSigSvsPack:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param packName
	 * @return
	 */
	public boolean isExistSigSvsPack(String packName);
	/**
	 * 根据名称查询签约服务包
	 * getSigSvsPackByName:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @return
	 */
	public SigServicepackVo getSigSvsPackByName(String packName);
     /**
	 * 根据服务包ID获取详细服务列表（无分页）
	 * @param servicepackId
	 * @return
	 */
	public List<ServicepackDetailsVo> getServicePackDetailsListNotPage(int servicepackId);
	/**
	 * 根据签约服务包id查询签约服务包详细信息
	 * getSigSvsPackById:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param id
	 * @return
	 */
	public SigServicepackVo getSigSvsPackById(int id);
	/**
	 * 逻辑删除签约服务包
	 * deleteSigSvsPack:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param sigId
	 * @return
	 */
	public int deleteSigSvsPack(int sigId);
	 
	/**
	 * 逻辑删除签约服务中间包
	 * deleteSigSvsPackDtlRln:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param sigId
	 * @return
	 */
	public int deleteSigSvsPackDtlRln(int sigId);
	
	/**
	 * 
	 * deleteSigSvsPackDtlsRln:(这里用一句话描述这个方法的作用). <br/>
	 * @author ken
	 * @param sigId
	 * @param detailsId
	 * @return
	 */
	public int deleteSigSvsPackDtlsRln(int sigId,int detailsId);
	/**获取未分配的签约中间服务详情信息
	
	 * @author ken
	 * @param page
	 * @param entity
	 * @return
	 */
	public Page<ServicepackDetailsEntity> getUnSvsPackDetailsList(Page<ServicepackDetailsEntity> page,int sigId);
	/**
	 * 
	 * getSvsPackDtlLst:(这里用一句话描述这个方法的作用). <br/>
	 * TODO(这里描述这个方法适用条件 – 可选).<br/>
	 * TODO(这里描述这个方法的执行流程 – 可选).<br/>
	 * TODO(这里描述这个方法的使用方法 – 可选).<br/>
	 * TODO(这里描述这个方法的注意事项 – 可选).<br/>
	 *
	 * @author ken
	 * @param page
	 * @param entity
	 * @return
	 */
	public Page<ServicepackDetailsEntity> getSvsPackDtlLst(Page<ServicepackDetailsEntity> page,ServicepackDetailsEntity entity);

}
